package com.mercury.ec.framework.air.core.client.impl.sunstn.dto.rt;

import cn.hutool.core.util.StrUtil;
import com.mercury.ec.framework.air.core.client.impl.sunstn.dto.SunstnCommonReqDTO;
import com.mercury.ec.module.basic.enums.BasicBizScopeTypeEnum;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;

/**
 * RT Request DTO
 *
 * @author hesx
 */
@Data
@NoArgsConstructor
public class SunstnRtReqDTO extends SunstnCommonReqDTO {
    /**
     * pnr
     */
    @NotBlank(message = "pnr不能为空")
    private String pnr;
    /**
     * 该编码是否为预订编码
     */
    private Integer hk = 0;
    /**
     * 是否获取票号信息（只有 hk=0 时此项才有效）
     */
    private Integer get_ticket = 1;
    /**
     * 是否获取该订单的票面、机建、燃油价格信息
     */
    private Integer get_price = 1;
    /**
     * 用户自定义执行 PAT 时的指令行，例如 PAT:A*YD
     */
    private String pat_cmd;
    /**
     * 是否获取RT的原始信息
     */
    private Integer get_rawdata = 1;
//    /**
//     * 编码内容导入时，RT内容的16进制编码字符串  todo 加此参数提取报错
//     */
//    private Integer pnr_data = 0;
    /**
     * 编码内容导入时，PAT:A内容的16进制编码字符串
     */
    private Integer pat_data = 0;
    /**
     * 获取运价时，如果是以大客户编码方式获取，则需指令该大客户编码，如大客户编码为12345678，则系统在获取运价时，会执行指令：PAT:A#C12345678
     */
    private String customer_code = "";
    /**
     * 是否获取乘机人的手机号码
     */
    private Integer get_tel = 1;
    /**
     * 只取RT返回的第一页内容(不翻页)
     */
    private Integer no_pn = 0;
    /**
     * 0-编码为UN NO HX状态时不解析编码内容/1-所有编码状态均解析编码内容
     */
    private Integer all_state = 1;

    public SunstnRtReqDTO(Integer scopeType, String pnr, String patCmd, String customerCode) {
        setScopeType(scopeType);
        this.pnr = pnr;
        this.pat_cmd = patCmd;
        // 防止接口报错，未传值默认空串
        if (StrUtil.isNotBlank(customerCode)) {
            this.customer_code = customerCode;
        }
    }

    @Override
    public String getCmd() {
        if (BasicBizScopeTypeEnum.isDomestic(getScopeType())) {
            return "rt_parse";
        } else {
            return "rt_parse_gj";
        }
    }
}
